package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.PO.PropertyAutoWithdrawCashSetInfoPO;
import com.itlong.cloud.POJO.VO.property.PropertyBalanceVO;
import com.itlong.cloud.POJO.VO.property.PropertyWithdrawVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业-提现服务-提现管理数据访问接口。
 * <desc/>
 *
 * @createDate 2018/09/21.
 */
@Mapper
@Repository
public interface IPropertyWithdrawDao {

    /**
      * <desc>
      *      物业提现信息分页查询。
      * <desc/>
      *
      * @param  param
      * @return
      * @author Qiang.S
      * @createDate 2018/09/21
      */
    List<PropertyWithdrawVO> getWithdrawByPage(Map<String, Object> param);

     /**
      * <desc>
      *      物业提现信息总记录数。
      * <desc/>
      *
      * @param  param
      * @return
      * @author Qiang.S
      * @createDate 2018/09/21
      */
    Integer getWithdrawInfoPageCount(Map<String, Object> param);

    /**
     * <desc>
     *      查询可提现余额
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    String getBalance(String projectId);

    /**
     * <desc>
     *      查询项目财务状态
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018/10/24
     */
    String getFinanceStatusByProjectId(String projectId);

    /**
     * <desc>
     *      查询提现手续费
     * <desc/>
     *
     * @return PropertyBalanceVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    List<PropertyBalanceVO> getThirdPartyPaymentInfo();

    /**
     * <desc>
     *      判断支付密码是否正确
     * <desc/>
     *
     * @param projectId 项目编号
     * @param payPassword 支付密码
     * @return PropertyBalanceVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/23
     */
    Integer checkPayPassword(@Param("projectId") String projectId, @Param("payPassword")String payPassword);

    /**
     * <desc>
     *      判断第三方支付中银联状态是否正常
     * <desc/>
     *
     * @return Integer
     * @author Qiang.S
     * @createDate 2018/10/09
     */
    Integer checkUnionpayStatus();

    /**
     * <desc>
     *     新增自动提现设置
     * <desc/>
     *
     * @param  params  自动提现信息
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    Integer setAutoWithdraw(Map<String,Object> params);

    /**
     * <desc>
     *     更新自动提现设置
     * <desc/>
     *
     * @param  params  自动提现信息
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    Integer updateAutoWithdraw(Map<String,Object> params);

    /**
     * <desc>
     *      查询自动提现信息
     * <desc/>
     *
     * @param projectId 项目编号
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    PropertyAutoWithdrawCashSetInfoPO getAutoWithdraw(String projectId);

    /**
     * <desc>
     *      查询所有自动提现信息
     * <desc/>
     *
     * @return MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    List<PropertyAutoWithdrawCashSetInfoPO> getAutoWithdrawAll();

    /**
     * <desc>
     *     保存提现申请
     * <desc/>
     *
     * @param  params  提现申请信息
     * @return  MessageVO 标准格式化响应结果
     * @author Qiang.S
     * @createDate 2018/09/24
     */
    Integer withdraw(Map<String,Object> params);

}
